package com.b1.taskmanagerclient.start.gui;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

/**
 * класс окна конфигураци подключения к серверу
 * @author Exoo
 */
public class WindowParamsConnect extends JFrame
{
    private final static int WIDTH = 350;       //ширина окна
    private final static int HEIGHT = 100;      // высота окна
    private JTextField hostName;                // поле для воода имени сервера
    private JTextField port;                    // поле для ввода номера порта
    
    /**
     * конструктор класса 
     * отрисовывает окно
     * работает с файлом конфигураций. для записи новых параметров
     */
    public WindowParamsConnect()
    {
        super("Params Connect");
        JPanel content = new JPanel();
        try 
        {
            java.awt.Toolkit jToolkit = java.awt.Toolkit.getDefaultToolkit();
            java.awt.Dimension screenSize = jToolkit.getScreenSize();
            setLocation((int) (screenSize.getWidth()/3), (int) (screenSize.getHeight()/3));
        } 
        catch (java.awt.AWTError ex) 
        {
            org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(WindowParamsConnect.class);
            log.error(ShowContact.class.getName(), ex);
        }
        
        content.add(createLabel("Host Name"), BorderLayout.WEST);
        content.add(createLabel("Port"), BorderLayout.CENTER);
        content.add(createLabel(""), BorderLayout.EAST);
        content.add(createFieldHostName(), BorderLayout.WEST);
        content.add(createFieldPort(), BorderLayout.CENTER);
        content.add(createButton(), BorderLayout.EAST);
        setContentPane(content);
        setSize(WIDTH, HEIGHT);
        setAlwaysOnTop(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        
    }
    /**
     * метод создания поля для ввода имени хоста 
     * @return 
     */
    private JTextField createFieldHostName()
    {
        if (com.b1.taskmanagerclient.api.ConfigFile.getParams()==null)hostName = new JTextField("localhost");
        else
            hostName = new JTextField(com.b1.taskmanagerclient.api.ConfigFile.getParams()[0]);
        hostName.setPreferredSize(new Dimension(120, 20));
        return hostName;
    }
    /**
     * метод создания поля для ввода номера порта 
     * @return 
     */
    private JTextField createFieldPort()
    {
        if (com.b1.taskmanagerclient.api.ConfigFile.getParams()==null)port = new JTextField("4534");
        else
            port = new JTextField(com.b1.taskmanagerclient.api.ConfigFile.getParams()[1]);
        port.setPreferredSize(new Dimension(60, 20));
        return port;
    }
    
    /**
     * метод создания кнопки
     * @return 
     */
    private JButton createButton()
    {
        JButton btn  = new JButton("Ok");
        btn.setPreferredSize(new Dimension(70, 20));
        btn.addActionListener(new ActionListener() 
        {
            // при нажатии на кнопку осуществляется запись в файл конф.
            public void actionPerformed(ActionEvent ae)
            {
                com.b1.taskmanagerclient.api.ConfigFile.setParams(hostName.getText(),Integer.parseInt(port.getText()));
                System.exit(0);
            }
        });
        return btn;
    }
    
    /**
     * метод создания лейбла
     * @param caption
     * @return 
     */
    private JLabel createLabel(String caption) {
        JLabel lbl = new JLabel(caption);
        lbl.setPreferredSize(new Dimension(100, 14));
        lbl.setHorizontalAlignment(JLabel.CENTER);
        return lbl;
    }
    
}
